<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h1>{{ msg }}</h1>
      <p>{{ count }}</p>

      <input type="text" v-model="count" />
      <button @click="add2">add</button>
    </div>

    <script src="./lib/vue.global.js"></script>
    <script>
      // 通过 Vue.createApp 创建实例
      // import { createApp, ref } from 'vue'
      const { createApp, ref } = Vue;
      // createApp 接收一个组件的选项对象
      const app = createApp({
        data() {
          return {
            msg: "Hello",
          };
        },

        methods: {
          add() {
            console.log(this.msg);
            console.log(this.count);
            this.count++;
          },
        },

        setup() {
          // setup 函数是一切组合式API的入口
          // setup 中 this 指向 undefined （cdn的方式中，this 指向的 windows）

          // ref 函数返回一个 ref 对象，是一个响应式的。
          //    对象中有一个 value 属性，它才是响应式的，在js部分的操作都要 .value 再操作
          //    ref 对象在模块与选项式API中的使用，会自动解包。所以不需要 .value
          const count = ref(10);

          function add2() {
            console.log("add2", count);
            // this.count++;
            count.value++;
          }

          // return 的内容才可以在模板中，或选项式API中通过this指向使用
          return {
            count,
            add2,
          };
        },
      });

      // console.log(app);

      // app.mount() 挂载实例到根元素上
      app.mount("#app");
    </script>
  </body>
</html>
